容器網(wǎng)絡(luò)是一種新興的應(yīng)用沙盒機制,用于家庭桌面和網(wǎng)絡(luò)規(guī)模的 企業(yè)網(wǎng)絡(luò) 解決方案,其概念類似于虛擬機。與主機和所有其他容器隔離的容器內(nèi)部是一個功能齊全的 Linux 環(huán)境,具有自己的用戶、文件系統(tǒng)、進程和網(wǎng)絡(luò)堆棧。容器內(nèi)的所有應(yīng)用程序只能訪問或修改容器內(nèi)可用的文件或資源。
可以同時運行多個容器,每個容器都有自己的安裝和依賴項。這在應(yīng)用程序的較新版本可能需要升級可能導(dǎo)致與服務(wù)器上運行的其他應(yīng)用程序依賴項發(fā)生沖突的依賴項的情況下特別有用。與虛擬機不同,容器共享主機資源,而不是完全模擬計算機上的所有硬件,使容器比虛擬機更小更快,并減少開銷。特別是在 Web 規(guī)模應(yīng)用程序的上下文中,容器被設(shè)計為虛擬機的替代品,作為微服務(wù)架構(gòu)的部署平臺。
容器還具有可移植性的特點,比如Docker,一個容器引擎,允許開發(fā)者將一個容器和它的所有依賴打包在一起。然后可以使該容器包可供下載。下載后,容器可以立即在主機上運行。
容器網(wǎng)絡(luò)如何工作?
容器網(wǎng)絡(luò)是一種虛擬化形式,在概念上類似于虛擬機 (VM),但有明顯區(qū)別。首先,容器方法是操作系統(tǒng)虛擬化的一種形式,而虛擬機是硬件虛擬化的一種形式。
在管理程序上運行的每個虛擬機都有自己的操作系統(tǒng)、應(yīng)用程序和庫,并且能夠封裝持久數(shù)據(jù)、安裝新操作系統(tǒng)、使用與主機不同的文件系統(tǒng)或使用不同的內(nèi)核版本。
相反,容器是映像的“運行實例”,是短暫的操作系統(tǒng)虛擬化,它會啟動以執(zhí)行某些任務(wù),然后被刪除和遺忘。由于容器的短暫性,與需要更大地址空間的虛擬機相比,系統(tǒng)用戶運行的容器實例要多得多。
為了創(chuàng)建隔離,容器依賴于兩個 Linux 內(nèi)核特性:命名空間和 cgroup。為了給容器自己的系統(tǒng)視圖,將其與其他資源隔離開來,為每個資源創(chuàng)建一個命名空間,并與其余系統(tǒng)不共享。然后使用控制組(Cgroups)來監(jiān)控和限制系統(tǒng)資源,如 CPU、內(nèi)存、磁盤 I/O、網(wǎng)絡(luò)等。
容器網(wǎng)絡(luò)的好處
容器正在迅速被采用,取代虛擬機作為微服務(wù)平臺。
容器有幾個關(guān)鍵的好處:
- 與現(xiàn)有工作負(fù)載一起運行容器化應(yīng)用程序: 機器可以在同一基礎(chǔ)架構(gòu)上與傳統(tǒng) VM 一起運行容器化應(yīng)用程序,從而提供靈活性和速度。
- 將可移植性與安全性、可見性和管理相結(jié)合: 由于容器的固有設(shè)計,它通過沙盒、主機的資源透明性、任務(wù)管理和執(zhí)行環(huán)境的可移植性實現(xiàn)了更高的安全性。
- 利用現(xiàn)有基礎(chǔ)架構(gòu)并輕松擴展: 使用現(xiàn)有 SDDC 避免成本高昂且耗時的基礎(chǔ)架構(gòu)重新架構(gòu)導(dǎo)致孤島 - 當(dāng)不同部門在同一組織內(nèi)維護自己的 IT 基礎(chǔ)架構(gòu)時,就會出現(xiàn)孤島。由于每個部門的技術(shù)配置存在差異,這種“孤島效應(yīng)”在推出組織范圍的 IT 策略和升級時會產(chǎn)生問題。重新集成孤島是一個昂貴且耗時的過程,可以通過容器網(wǎng)絡(luò)來避免。
- 為開發(fā)者提供與 Docker 兼容的接口: 已經(jīng)熟悉 Docker 的開發(fā)者可以通過與 Docker 兼容的接口在容器中開發(fā)應(yīng)用程序,然后通過自助管理門戶或 UI 進行配置。
在 Web 級應(yīng)用程序部署中使用容器網(wǎng)絡(luò)
容器被部署為企業(yè)環(huán)境中微服務(wù)架構(gòu)的一部分,以幫助封裝大型 Web 應(yīng)用程序常見的單個任務(wù)。每個任務(wù)可能有自己的容器,面向外部的容器(如 API 和 GUI)對公共互聯(lián)網(wǎng)開放,其他容器將駐留在專用網(wǎng)絡(luò)上。
微服務(wù)模型帶來的優(yōu)勢:
- 易于部署: 主機配置可以嵌入到容器中,使其在部署后即可使用。
- 一次性: 容器專為快速啟動和處置而設(shè)計。如果主機出現(xiàn)故障,使應(yīng)用程序重新聯(lián)機就像引入備用服務(wù)器一樣簡單。
- 容錯: 容器為數(shù)據(jù)庫和 Web 服務(wù)器創(chuàng)建簡單的冗余。在多個節(jié)點上復(fù)制同一個容器提供了高可用性和 容錯性。
容器網(wǎng)絡(luò)的類型
目前使用的容器網(wǎng)絡(luò)有五種類型;它們的特點圍繞著 IP-per-container 與 IP-per-pod 模型以及網(wǎng)絡(luò)地址轉(zhuǎn)換 (NAT) 的要求與不需要轉(zhuǎn)換。
- None: 容器接收到一個網(wǎng)絡(luò)棧;但是,它缺少外部連接。此模式對于測試容器、為以后的網(wǎng)絡(luò)連接暫存容器以及分配給不需要外部通信的容器很有用。
- 橋接: 在內(nèi)部主機網(wǎng)絡(luò)上橋接并允許與同一主機上的其他容器通信的容器。無法從主機外部訪問容器。橋接網(wǎng)絡(luò)是 Docker 容器的默認(rèn)網(wǎng)絡(luò)。
- 主機: 此配置允許創(chuàng)建的容器共享主機的網(wǎng)絡(luò)命名空間,授予容器訪問主機的所有網(wǎng)絡(luò)接口的權(quán)限。最不復(fù)雜的外部網(wǎng)絡(luò)配置,由于網(wǎng)絡(luò)接口的共享使用,這種類型很容易發(fā)生端口沖突。
- Underlay: Underlays 直接打開主機接口到在主機上運行的容器,并消除對端口映射的需要,使其比橋接器更有效。
- Overlay: Overlays 使用網(wǎng)絡(luò)隧道在主機之間進行通信,當(dāng)容器托管在不同的主機上時,它們可以像在同一臺機器上一樣運行。